import Vue from "vue"; //使用 Vue 框架
import App from "./App.vue"; //主页面
import router from "./router/router"; //路由设置
import axios from "axios"; //引用 axios
import store from "./store/store"; //状态设置
// import iView from "./plugins/iview"   //引入插件
import Global from "./Components/Common/Global"; //引入全局变量
import VueClipboard from "vue-clipboard2"; //引入插件（复制内容到剪贴板）
import iView from "iview";
import "iview/dist/styles/iview.css";

//插件
Vue.use(VueClipboard);
Vue.use(iView);

//请求时显示加载条
router.beforeEach((to, from, next) => {
  iView.LoadingBar.start();
  next();
});

router.afterEach(route => {
  iView.LoadingBar.finish();
});

//将全局变量挂载在 Vue 实例可以直接使用
Vue.prototype.$http = axios;
Vue.prototype.$Global = Global;

//开发模式
Vue.config.productionTip = false;

// http request 拦截器
axios.interceptors.request.use(
  config => {
    if (localStorage.getItem("usertoken")) {
      // 判断是否存在token，如果存在的话，则每个http header都加上token
      config.headers.Authorization =
        "Bearer " + localStorage.getItem("usertoken");
    }
    return config;
  },
  err => {
    return Promise.reject(err);
  }
);

// http response 拦截器
axios.interceptors.response.use(
  response => {
      return response;
  },
  error => {
      if (error.response) {
          switch (error.response.status) {
              case 401:
                  // 返回 401 清除token信息并跳转到登录页面
                  // console.log('401')
                  localStorage.removeItem('username')
                  localStorage.removeItem('usertoken')
                  iView.Message.error('用户尚未登录');
          }
      }
      return Promise.reject(error.response.data) // 返回接口返回的错误信息
  });

//创建实例
new Vue({
  router,
  store,

  // 渲染模板,显示主界面
  render: h => h(App)
}).$mount("#app"); //挂载在 id = app 的标签
